A hardware bus is a system of hardware connections that allows for data transfers between memory modules, processors, hard disk drives, and other types of devices in a hardware system. Bus protocols, such as the Advanced eXtensible Interface (AXI) protocol, manage data transfers over the bus and specify how data transactions between devices are identified and ordered. For example, in the AXI protocol, each bus transaction has an identifier (ID) value that is used to identify data, requests, responses, and acknowledgments that each may be associated with the transaction. AXI IDs used by a device are allocated a fixed number of bits by the hardware system.
In some circumstances, a bus may be used to connect two or more hardware systems that each have allocated a different number of bits for bus transaction ID values. For example, the bus may span between a Programmable Logic Device (PLD) and a processor subsystem where PLD bus transactions are allocated M bits for ID values, and processor subsystem bus transactions are allocated N bits for ID values. If M is different than N, then the bus transaction ID values used by the two hardware systems may not be compatible.